﻿using System.Collections.Generic;

namespace SharpTag.ID3
{
    /// <summary>
    /// Interface representing and ID3v2 Tag.
    /// </summary>
    public interface IID3v2Tag : ITag
    {
        /// <summary>
        /// Gets the Header of the Tag.
        /// </summary>
        ITagHeader Header
        {
            get;
        }

        /// <summary>
        /// Gets the ExtendedHeader of the Tag.
        /// </summary>
        ITagExtendedHeader ExtendedHeader
        {
            get;
        }

        /// <summary>
        /// Gets the amount of Padding in the Tag.
        /// </summary>
        long Padding
        {
            get;
        }

        /// <summary>
        /// Gets the Footer of the Tag.
        /// </summary>
        ITagFooter Footer
        {
            get;
        }

        /// <summary>
        /// Gets the List of <see cref="IFrame"/> objects in the Tag.
        /// </summary>
        List<IFrame> Frames
        {
            get;
        }

        /// <summary>
        /// Adds an <see cref="IFrame"/> object to the Tag.
        /// </summary>
        /// <param name="frame">An <see cref="IFrame"/> object.</param>
        void AddFrame(IFrame frame);

        /// <summary>
        /// Removes an <see cref="IFrame"/> object to the Tag.
        /// </summary>
        /// <param name="frame">An <see cref="IFrame"/> object.</param>
        void RemoveFrame(IFrame frame);
    }
}
